package com.eddie.builder.improve;

/**
 * 指挥者，动态的指定制作流程
 *
 * @author Eddie
 * @date 2022/07/28 10:50
 **/
public class HouseDirector {
    private HouseBuilder houseBuilder;

    //构造器传入
    public HouseDirector(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }

    //通过Setter传入
    public void setHouseBuilder(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }

    //如何处理建造房子的流程，交给指挥者
    public House constructHouse() {
        houseBuilder.buildBasic();
        houseBuilder.buildWalls();
        houseBuilder.roofed();
        return houseBuilder.buildHouse();
    }
}
